<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

</body>
<script>
  // var a = 10;  // 全局 
  // function fn() {
  //     a = 100;   
  //     console.log(a);  // 局部 100

  //     var a = 1332;  // 遇到关键词var  说明a局部变量  不会影响全局
  // }
  // fn();
  // console.log(a); // 10
</script>
<script>
  // var a,b,c; // 变量提升(把变量的声明 提升到当前作用域最前面  此处为了方便理解)
  // function fn(){     (把命名函数的声明 提升到当前作用域的最前面)
  //     console.log("函数执行了");
  // }


  // JS代码 从加载到开始执行 经历了那些过程?
  // 1. 语法解析   (发生在代码执行之前,通篇排查代码是否有语法错误?  有=> 报错  没有:进入下一步)
  // 2. 预编译     (发生在代码执行之前,是代码执行之前的准备工作)
  //    (1)  全局作用域
  //       a. 变量提升   (把变量的声明 提升到当前作用域最前面)   注意:不通过关键词直接声明的变量没有变量提升
  //       b. 确定函数体 (把命名函数的声明 提升到当前作用域的最前面)


  // console.log(a,b,c);  // undefined  undefined  undefined

  // var a = 1;
  // var b = 2;
  // var c = a + b;
  // console.log(c);


  console.log(fn);  //打印函数的内容
  fn();
  function fn() {
    console.log("函数执行了");
  }

</script>

</html>